<template>
  <header>
    <div class="l-content"> <!-- 左侧内容容器 -->
      <el-button @click="handleMenu" icon="el-icon-menu" size="mini"></el-button> <!-- 切换菜单的按钮 -->
      <el-breadcrumb separator="/"> <!-- 面包屑导航 -->
        <el-breadcrumb-item v-for="item in tags" :key="item.path" :to="{ path: item.path }">{{item.label}}</el-breadcrumb-item> <!-- 面包屑导航项 -->
      </el-breadcrumb>
    </div>
    <div class="r-content" @click="logOut"> <!-- 右侧内容容器 -->
      <img class="user" :src="userImg"/> <!-- 用户头像 -->
      <span>退出</span> <!-- 退出按钮 -->
    </div>
  </header>
</template>

<script>
import { mapState } from 'vuex' // 从Vuex中导入mapState函数

export default {
  name: 'HeaderShow',
  data() {
    return {
      userImg: require('../assets/img/5.png') // 用户头像数据
    }
  },
  methods: {
    handleMenu() { // 处理菜单切换的方法
      this.$store.commit('collapseMenu') // 提交Vuex动作以收起菜单
    },
    logOut() { // 处理退出登录的方法
      this.$store.commit('clearToken') // 提交Vuex动作以清除用户令牌
      this.$store.commit('clearMenu') // 提交Vuex动作以清除菜单状态
      this.$router.push("/login") // 重定向到登录页面
    }
  },
  computed: {
    ...mapState({ // 将状态映射到组件的计算属性
      tags: state => state.tabsList // 从状态中提取标签
    })
  }
}
</script>

<style lang="less" scoped>
header { /* 标题样式 */
  display: flex;
  justify-content: space-between;
  align-items: center;
  background-color: rgb(196, 184, 186); /* 背景颜色 */
  padding: 0;
}

.l-content { /* 左侧内容样式 */
  margin-left: 20px;
  display: flex;
  align-items: center;
  .el-button { /* 按钮样式 */
    margin-right: 20px;
  }
}

.r-content { /* 右侧内容样式 */
  margin-right: 20px;
  display: flex;
  align-items: center;
  cursor: pointer;
  .user { /* 用户头像样式 */
    width: 40px;
    height: 40px;
    border-radius: 50%;
    margin-right: 5px;
  }
}
</style>